perm filename ARMUS[SYS,HE]1 blob sn#004223 filedate 1972-10-27 generic text, type T, neo UTF8
00100	START:	MOVE P,[XWD -PDLL,UPDL]
00200		PUSHJ P,GAIN
00500		OUTSTR[ASCIZ/!
00600	/]
00700	WAIT:	WRCV EXE
00800		HLRZ 5,EXE
00900		CAIE 5,MASTER
01000		JRST[	MOVEI 3,VERSN
01100			JRST FINISH]
01200	WAITED:	MOVE 1,SEGJOB
01300		HRRZM 1,JOB
01400		HLRZM 1,SEG
01500	IFN REPORT+TRACK,<
01600		MOVE 1,[IOWD  DBL-100,DATO]
01700		MOVEM 1,DATPT			;DATA POINTER
01800		MOVEM 1,DATIWD			;OUTPUT POINTER
01900	>
02000		SETZB 3,TRAJER
02100		MOVEI 0,0
02200		LDB 1,[POINT 3,EXE,35]
02300		CAIG 1,1
02400		JRST READ
02500	IFE ARMWORK,<
02600		MOVEI 3,NOTHER
02700		JRST FINISH
02800	>
02900	IFN REPORT+TRACK,<		;WRITE OUT DATA
03000		INIT 15,17
03100		SIXBIT /DSK/
03200		0
03300		JRST NDM
03400		MOVE 2,FILE
03500		MOVEM 2,DFILE
03600		MOVE 2,PPPN
03700		MOVEM 2,DPPPN
03800	IFN TRACK,<
03900		SKIPE WALK
04000		JRST[	LOOKUP 15,DFILE
04100			JRST NDMS
04200			MOVE 2,[IOWD DBL,DATO]
04300			MOVEM 2,DATPT
04400			INPUT 15,1
04500			JRST EXFN]
04600	>
04700		ENTER 15,DFILE
04800		JRST[NDMS:MOVEI 3,NODATA
04900			SUB 17,[XWD 1,1]
05000			JRST FINISH]
05100	>
05200	EXFN:	CAIN 1,3
05300		JRST[	MOVE 4,EXE
05400			TRNN 4,HOLDF
05500			JRST [	SKIPN @STKPTR
05600				JRST BACK
05700				JRST MOVON]
05800			SOS 1,STKPTR
05900			MOVEI 2,(1)
06000			LDB 3,[POINT 9,EXE,26]
06100			SUBI 1,(3)
06200			HRLI 1,ARGS
06300			BLT 1,(2)
06400			TRNE 4,RELOCF
06500			JRST[	MOVE 1,STKPTR
06600				SUBI 1,(3)
06700				SUB 1,CBUFS
06800				HRRM 1,@STKPTR
06900				JRST BPTR]
07000		BPTR:	SOS STKPTR
07100		MOVON:	SETOM FUNCT
07200			JRST SSW]
07300		CAIE 1,2
07400		JRST[	MOVEI 3,INVMES
07500			JRST FINISH]
07600		SETZM FUNCT
07700		HRREI 2,BUF-1001
07800		MOVEM 2,CBUFS
07900		SETOM BUF
08000		SETZM DOING	;TRAJECTORY SET UP FOR
     

00100		SKIPE BAND
00200		JRST[	MOVEI 1,BUF
00300			MOVEM 1,GOODIE
00400			MOVEI 1,1001
00500			MOVEM 1,GOODIE+1
00600			SETZM GOODIE+2
00700			MOVE 14,BAND
00800			UFBRD 14,GOODIE
00900			JRST RE
01000			SKIPN BUF+1000
01100			JRST[	SETZM BLOCKS
01200				MOVEI 1,BUF2
01300				MOVEM 1,NXTBUF
01400				SETZM @NXTBUF
01500				JRST ZDTH]
01600			MOVEI 1,BUF2
01700			MOVEM 1,GOODIE
01800			MOVEI 1,20
01900			MOVEM 1,GOODIE+2
02000			UFBRD 14,GOODIE
02100			JRST RE
02200			MOVEI 1,=74
02300			SKIPN BUF2+1000
02400			MOVEI 1,0
02500			MOVEM 1,BLOCKS
02600			MOVEI 1,40
02700			MOVEM 1,GOODIE+2
02800			MOVEI 1,BUF
02900			MOVEM 1,NXTBUF
03000			MOVNS BUF2
03100			JRST ZDTH]
     

00100		MOVE 1,FILE
00200		MOVEM 1,LFILE
00300		MOVE 1,PPPN
00400		MOVEM 1,LPPPN
00500		INIT 16,17
00600		SIXBIT/DSK/
00700		XWD 0,0
00800		JRST[NDM:	MOVEI 3,NODEV
00900				JRST FINISH]
01000		LOOKUP 16,LFILE
01100		JRST[		MOVEI 3,NOFILE
01200				JRST FINISH]
01300		MOVS 1,LPPPN		;FILE LENGTH
01400		MOVN 1,1
01500		ASH 1,-11
01600		MOVEM 1,BLOCKS
01700		SOSGE BLOCKS
01800		JRST FINISH
01900		MOVE 10,[IOWD 1000,BUF]
02000		SETZ 11,
02100		IN 16,10
02200		JRST[	SOSGE BLOCKS
02300			JRST[	MOVEI 1,BUF2
02400				MOVEM 1,NXTBUF
02500				SETZM @NXTBUF
02600				JRST ZDTH]
02700			ADDI 10,1001
02800			IN 16,10
02900			JRST[	MOVEI 1,BUF
03000				MOVEM 1,NXTBUF
03100				MOVNS BUF2
03200				JRST ZDTH]
03300			JRST RE]
03400		JRST RE
     

00100	ZDTH:
00200		MOVE 1,[XWD DELTH,DELTH+1]
00300		SETZM DELTH
00400		BLT 1,DELTH+5
00500		MOVEI 1,=60
00600		MOVEM 1,STWT
00700		MOVNS BUF
00800	SSW:	PUSHJ P,SPACE
00900	WWS:
01000	IFE REPORT+TRACK<
01100	IFE USER<
01200		MOVEI 1,1
01300		CALLI 1,31
01400	>
01500	>
01600		MOVE BITSAV
01700		MOVE 1,COUNT
01800		CAMN 1,COUNTL#
01900		JRST[	SOSGE INLOOP#
02000			JRST[	SPCWAR 636367
02100				MOVEI 1,1
02200				CALLI 1,31
02300				SPCWAR 1,STRADR
02400				JRST RILC]
02500			JRST DILC]
02600		MOVEM 1,COUNTL
02700	RILC:
02800	IFE REPORT+TRACK<MOVEI 1,=2>
02900	IFN REPORT+TRACK<MOVEI 1,100000>
03000		MOVEM 1,INLOOP
03100	DILC:	TRNE DTST
03200		JRST BACK
03300		MOVE 1,@NXTBUF
03400		JUMPGE 1,.+2			;MORE TRAJECTORY TO COME
03500		JRST[	SOSGE BLOCKS
03600			JRST[	SETZM @NXTBUF	;ALL DONE MAKK THIS AS LAST
03700				RELEASE 16,
03800				JRST WDO]
03900			SKIPE BAND
04000			JRST[	MOVE 1,NXTBUF
04100				MOVEM 1,GOODIE
04200				UFBRD 14,GOODIE
04300				JRST RBD
04400				MOVE 1,NXTBUF
04500				SKIPN 1000(1)
04600				SETZM BLOCKS
04700				MOVEI 1,20
04800				ADDM 1,GOODIE+2
04900				JRST ROK]
05000			MOVE 10,NXTBUF
05100			SOJ 10,
05200			HRLI 10,-1000
05300			IN 16,10
05400			JRST[ROK:MOVE 1,NXTBUF
05500				MOVNS (1)
05600				ADDI 1,1001
05700				CAILE 1,BUF2
05800				MOVEI 1,BUF
05900				MOVEM 1,NXTBUF
06000				JRST WDO]
06100		RBD:	MOVE 1,NXTBUF		;READ ERROR
06200			SETZM @NXTBUF		;MARK AS LAST
06300		WFF:	MOVE BITSAV		;AND WAIT FOR IT TO END
06400			TRNN DTST
06500			JRST WFF
06600		RE:	MOVEI 3,REAERR
06700			JRST FINISH]
06800	WDO:
06900	IFE REPORT+TRACK,<
07000		IFE USER,<JRST WWS>
07100		IFN USER,<JRST SSW>
07200	>
07300	IFN TRACK,<
07400		SKIPE WALK
07500		JRST SSW
07600	>
07700	IFN REPORT+TRACK,<
07800		HRRZ 1,DATIWD		;START TO WRITE
07900		CAIL 1,DATO+DBL-1
08000		JRST DOD
08100		HRRZ 2,DATPT		;LAST LOC FILLED
08200	WA:	SUBI 2,(1)
08300		JUMPL 2,[MOVEI 2,DATO+DBL-1
08400		JRST WA]
08500		TRZ 2,177
08600		JUMPN 2,[	MOVN 1,2	;MORE THAN 200 WORDS SO WRITE IT OUT
08700				HRLM 1,DATIWD	;NEG WORD COUNT
08800				OUT 15,DATIWD
08900				HRRZ 1,DATIWD
09000				ADDI 1,(2)
09100				HRRM 1,DATIWD
09200				JRST DOD]
09300	DOD:
09400		IFE USER,<JRST WWS>
09500		IFN USER,<JRST SSW>
09600	>
     

00100	BACK:	SPCWAR 636367
00200		MOVEI 0,0
00300		SKIPE 3,TRAJER
00400		JRST[	IFE DEB,<
00500			IFN TRACK,<SKIPN WALK>
00600				TRO RONLY
00700				MOVEM BITSAV
00800				MOVEI 1,1
00900				CALLI 1,31
01000			DRSW:	PUSHJ P,SPACE
01100			DRR:	MOVE BITSAV
01200				TRNN DTST
01300			IFE USER,<JRST DRR>
01400			IFN USER,<JRST DRSW>
01500				SPCWAR 636367
01600				MOVEI 0,0
01700				PUSHJ P,SETSET
01800	>
01900				JRST NOERR]
02000	NOERR:	IFE USER,<RELEASE 17,>
02100		IFN REPORT+TRACK,<
02200		PUSHJ P,CLODAT
02300		CLOSE 15,
02400		>
02500		SKIPN SEG
02600		JRST[	SETOM NAME
02700			MOVEM 3,STATUS
02800			MOVE 2,[XWD TH,THETA]
02900			BLT 2,THETA+6
03000			MOVE 1,JOB
03100			MOVEM 1,REPLY
03200			SEND REPLY
03300			JRST WAIT
03400			JRST WAIT]
03500		MOVE 2,SEG
03600		CALLI 2,400016
03700		JRST WAIT
03800		HRRZ 4,NAME
03900		MOVE 2,(4)
04000		HLRZ 4,NAME
04100		MOVEM 2,(4)
04200		PUSHJ P,[SETNAM:MOVE 2,THETA
04300		MOVEI 4,6(2)
04400		HRLI 2,TH
04500		IFN TRACK,<SKIPN WALK>
04600		BLT 2,(4)
04700		MOVE 2,ETOR
04800		MOVEI 4,6(2)
04900		HRLI 2,TORE
05000		BLT 2,(4)
05100		PUSHJ P,SETFLT
05200		MOVEM 3,@STATUS
05300		MOVE 4,DOING
05400		MOVEM 4,@SEGMENT
05500		HRRZ 2,NAME
05600		SETZM (2)
05700		HRLZI 2,40
05800		MOVEM 2,IBIT
05900		INTUUO 4,JOB
06000		JUMP
06100		CALLI 1,400017
06200		POPJ P,]
06300		JRST WAIT
     

00100	IFN REPORT+TRACK,<
00200	CLODAT:IFN TRACK,<
00300		SKIPE WALK
00400		POPJ P,
00500	>
00600	NWI:	HRRZ 1,DATIWD
00700		HRRZ 2,DATPT
00800		SUBI 2,(1)
00900		JUMPL 2,[	HRRZI 2,DATO+DBL-1
01000				SUBI 2,(1)
01100				MOVN 2,2
01200				HRLM 2,DATIWD
01300				SKIPE 2
01400				OUT 15,DATIWD
01500				MOVEI 2,DATO-1
01600				HRRM 2,DATIWD
01700				JRST NWI]
01800		ADDI 2,200
01900		TRZ 2,177
02000		MOVN 1,2
02100		HRLM 1,DATIWD
02200		OUT 15,DATIWD
02300		POPJ P,
02400	>
02500	
     

00100	READ:	SETZM STWT
00200		SKIPG 1
00300		TRO  POTREAD
00400		TRO RONLY+RUN
00500	RSW:	PUSHJ P,SPACE
00600	RSWW:	MOVE BITSAV
00700		TRNN  DTST
00800	IFE USER,<JRST RSWW>
00900	IFN USER,<JRST RSW>
01000		MOVE 3,TRAJER
01100		PUSHJ P,SETSET
01200		JRST FINISH
01300	
     

00100	SPACE:	MOVEI 1,=180
00200		MOVEM 1,COUNT
00300		TRO TRIP
00400		LDB 1,[POINT 1,EXE,32]
00500		MOVEM 1,SOTCHS
00600		JUMPE 1,.+2
00700		TRO STCH
00800	IFN DEB,<SETZM ETIM>
00900		MOVEM BITSAV
01000	IFE USER,<
01100	IFN TRACK,<
01200		SKIPE WALK
01300		JRST[	MOVEM 17,USAVE+17
01400			MOVEM 17,USAVE+17
01500			MOVEI 17,USAVE
01600			BLT 17,USAVE+16
01700			JSR STRADR-1
01800			HRLZI 17,USAVE
01900			BLT 17,16
02000			MOVE 17,USAVE+17
02100			POPJ P,]
02200	>
02300	IFE USER,<
02400	GETAD:	INIT 17,417
02500		SIXBIT /AD/
02600		XWD 0,0
02700		JRST GETAD
02800	>
02900	
03000		SPCWAR 1,STRADR
03100	>
03200	IFN USER,<
03300		MOVEM 17,USAVE+17
03400		MOVEI 17,USAVE
03500		BLT 17,USAVE+16
03600		JSR STRADR-1
03700		HRLZI 17,USAVE
03800		BLT 17,16
03900		MOVE 17,USAVE+17
04000	>
04100		POPJ P,
04200	
04300	UPDL:	FINISH
04400		BLOCK PDLL
04500	
04600	IFN USER+TRACK,<
04700	USAVE:	BLOCK 20
04800	>
04900	IFN TRACK,<WALK:0>
05000	
05100	IFN REPORT+TRACK,<
05200	DFILE:	0
05300		SIXBIT/TMP/
05400		0
05500	DPPPN:	0
05600	>
05700	LFILE:	0
05800		SIXBIT/TRJ/
05900		0
06000	LPPPN:	0
06100	
06200	GOODIE:	BLOCK 3
     

00100	FINISH:	SPCWAR 636367
00200	IFE USER,<RELEASE 17,>
00300		SKIPE SEG
00400		JRST [ATSEG:	MOVE 1,SEG
00500				CALLI 1,400016
00600				JRST WAIT
00700				PUSHJ P,SETNAM
00800				JRST WAIT]
00900		MOVEM 3,STATUS
01000		MOVE 1,[XWD TH,THETA]
01100		BLT 1,THETA+6
01200		MOVE 1,JOB
01300		MOVEM 1,REPLY
01400		SKIPN 1
01500		JRST WAITED
01600		SEND REPLY
01700		JRST WAIT
01800		JRST WAIT
01900	
02000	REPLY:	0
02100		EXE
02200	SEG:	0
02300	SOTCH:	0
02400	JOB:	0
02500	IBIT:	000040000000
02600	TICKS:	0
     

00100	SETFLT:	SKIPN NERVES
00200		POPJ P,
00300		MOVEI 6,1
00400		MOVE 4,NERVES
00500	STL:	MOVE 5,OBS(6)
00600		MOVEM 5,(4)
00700		ADDI 4,=16
00800		SOJGE 6,STL
00900		POPJ P,
01000	
01100		XLIST
01200		SUBTTL	SPACEWAR CODE	CONTROL			LOU PAUL
01300		LIST